package com.category.douyijia.controller;

import java.util.ArrayList;
import java.util.List;

import com.category.douyijia.model.Area;
import com.category.douyijia.model.Commodity;
import com.category.douyijia.services.AreaService;
import com.category.douyijia.services.CommodityService;
import com.jfinal.core.Controller;
import com.jfinal.core.NotAction;
import com.jfinal.core.Path;

/**
 * 创建商品控制器
 * 可以设置所有商品
 * 它可以将那些商品更好的显现出来
 * @author jiangmengyang
 *@version v1.0
 *访问页面路径：douyijia.category.com+/commodity+"/"+action
 */
@Path("commodity")
public class CommodityController extends Controller {
	 /**
	  * 创建商品在服务文件中的dao 的工具
	  * 这个工具可以利用CommodityService里面的，
	  * 增删改查的功能
	  */
		Commodity commodity = CommodityService.commodityDao;
	    /**
	     * 创建一个非action的方法，
	     * 用于查询商品里的信息
	     * @return
	     * 返回所有商品的信息
	     */
	@SuppressWarnings({"unchecked","rawtypes"})
	@NotAction
	    public List<Commodity> commodityAll() {
			return (ArrayList)commodity.findAll();
	    }
	 /**
	  * 创建一个保存页面模板的方法，
	  * 用于保存页面静态模板
	  */
	    
	 @NotAction
	 private void keepModel() {
		 /*
		  * 创建一个保存多参数的模板，
		  * 在不指定数据类型文件时，
		  * 默认为string的类型
		  */
		 keepPara("commId","commName");
		/*
		 * 创建一个多参数模板，
		 * 指定参数类型为整型
		 */
		 keepPara(Integer.class,"commRepertory","commUnivalence");
		 /*
		  * 创建一个多参数模板，
		  * 指定参数类型为字符串
		  */
		 keepPara(String.class,"commPrcture","commDescribe") ;
		 /*
		  * 创建一个参数模板
		  * 指定参数类型为字符串
		  * 
		  */
		 keepPara(String.class,"commTypeId");
	 }
	 /**
	  * 创建一个注册java的服务页面
	  * 使用服务器提供的模板生成页面
	  * 主要用于往页面里添加数据
	  */
	 public void  addtion(){
		 //设置保存数据模板
		 keepModel();
		 //设置网页的模板
		 render("commodity_addtion.jsp");
	 }
	 /**
	  *创建一个非action得方法
	  *查找是私有的，在页面内进行的
	  * @param commId
	  * 通过commId查找商品表
	  * @return
	  * 返回一个商品对象
	  */
	 	@NotAction
	   private Commodity find_by_comm_id(String commId) {
	 		/*
	 		 * 如果commId不为空结果返回一个商品对象，
	 		 * 查找商品表里的所有列
	 		 * 如果commId为空，
	 		 * 则返回值为空
	 		 */
		   if(commId!=null && !(commId.equals(""))) {
			   //this.commodity等于上面建立的实体类的对象
				   return (Commodity) this.commodity.find(
						   "select "
								   + "comm_id,comm_name,comm_repertory,comm_univalence,comm_picture,"
				       				+ "comm_describe,comm_type_id "
				       				+ "from Commodity "
				       				+ "where comm_"
				       				+ "id = ?",commId);  
		   }else {
			   return null;
		   }
	   }
	 	/**
	 	 * 如果commodity不为空则跳转另一个页面
	 	 * 如果commodity为空则返回原来的页面
	 	 * 进行页面跳转则用public
	 	 * @param commodity
	 	 * 原来的实体类的一个对象
	 	 * @param commId
	 	 * 通过commId去查找商品表
	 	 * 再进行更改
	 	 */
	 	public void update_by_comm_id( Commodity commodity,  String commId){
	 		if(commId!=null && !(commId.equals(""))){
	 			/*
	 			 * oldArea=this.area=area
	 			 * 创建一个原来的地址
	 			 */
	 			Commodity oldCommodity = find_by_comm_id(commId);
	 			this.commodity._setAttrs(commodity).update();
	 			render("commodity_success.jsp");
	 		}else {
				render("commodity_index.jsp");
			}
	 	}
	 	 /**
	 	  * 如果商品表里的信息没有错误的话，
	 	  * 开发者科管理员可以访问并修改页面信息
	 	  */
	 	 public void index() {
	 		 render("commodity_index.jsp");
	 	 }
}
